package bsh.compilation;

import java.util.Set;

/**
 * Conjunto de opcoes de compilacao
 */
public interface CompilationOptions {

    /**
     * Comjunto de opcoes de debug a serem incluidas no bytecode
     * 
     * @return {@link Set}
     */
    Set<DebugOptions> debugOptions();

    /**
     * Se true, vai permitir o uso de variaveis nao declaradas. Serao criadas variaveis globais para as mesmas
     * 
     * @return boolean
     */
    boolean allowUndefinedVariables();

    /**
     * Se true, sempre inicializa variaveis locais.
     * 
     * @return boolean
     */
    boolean initializeLocalVariables();

    /**
     * Se true, todos os metodos criados terao em sua declaracao 'throws Exception'
     * 
     * @return boolean
     */
    boolean declareThrowsException();

    /**
     * Not yet implemented
     * 
     * @return boolean
     */
    boolean inlineConstants();

}
